package cn.good.yan;

import com.alibaba.cloud.nacos.ribbon.NacosRule;
import com.netflix.loadbalancer.IRule;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

/**
 * SpringBoot项目 - 客户端1
 * t1 模拟 通过 Nacos，客户端 请求 服务端，进行负载均衡
 * t2 模拟 配置文件，更改Nacos配置，服务的配置也更改
 * 3 该配置文件 - 设置nacos的集群负载均衡配置
 * 4 就近访问，在配置文件里配置  cluster-name: bj
 * 5 订阅者列表，可以查看该服务，有哪些ip地址，在调用
 * @author shengren.yan
 * @create 2023-09-27
 */
// 注册中心 注解
@EnableDiscoveryClient
@SpringBootApplication
public class BootApplication {

    public static void main(String[] args) {
        SpringApplication.run(BootApplication.class, args);
    }


    // 默认的 RestTemplate，自带轮询
    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

    // 如果在nacos配置了权重，并不会生效，需要将负载均衡 - 改为nacos的负载均衡方式
    @Bean
    public IRule ribbonRule() {
        return new NacosRule();
    }


}